import { NextRequest, NextResponse } from 'next/server';
import { sqliteDb } from '@/lib/sqlite-database';
import fs from 'fs';
import path from 'path';

export async function POST(request: NextRequest) {
  try {
    console.log('开始更新表ID格式...');
    
    // 获取所有设备
    const devices = sqliteDb.getAllDevices();
    
    let updatedCount = 0;
    const errors: any[] = [];
    
    for (const device of devices) {
      try {
        if (device.id) {
          // 检查并更新表ID格式
          let needsUpdate = false;
          let updates: any = {};
          
          // 处理命名表ID - 统一为C2
          if (device.naming_table_id && device.naming_table_id !== 'C2') {
            updates.naming_table_id = 'C2';
            needsUpdate = true;
          }
          
          // 处理位置表ID - 统一为C4
          if (device.position_table_id && device.position_table_id !== 'C4') {
            updates.position_table_id = 'C4';
            needsUpdate = true;
          }
          
          // 处理基本参数表ID - 统一为C18
          if (device.base_params_table_id && device.base_params_table_id !== 'C18') {
            updates.base_params_table_id = 'C18';
            needsUpdate = true;
          }
          
          if (needsUpdate) {
            // 使用原始SQLite方法更新
            const db = (sqliteDb as any).db;
            const updateFields = Object.keys(updates).map(key => `${key} = ?`).join(', ');
            const updateValues = Object.values(updates);
            
            const stmt = db.prepare(`UPDATE devices SET ${updateFields}, updated_at = ? WHERE id = ?`);
            stmt.run(...updateValues, new Date().toISOString(), device.id);
            
            updatedCount++;
            console.log(`更新设备 ${device.device_id}: ${JSON.stringify(updates)}`);
          }
        }
      } catch (error) {
        console.error(`更新设备 ${device.device_id} 失败:`, error);
        errors.push({ 
          device_id: device.device_id, 
          error: error instanceof Error ? error.message : '未知错误' 
        });
      }
    }
    
    console.log(`表ID格式更新完成！更新了 ${updatedCount} 个设备`);
    
    return NextResponse.json({
      success: true,
      message: `表ID格式更新完成！更新了 ${updatedCount} 个设备`,
      updatedCount,
      totalDevices: devices.length,
      errors: errors.length > 0 ? errors : undefined,
      tableIdMappings: {
        naming_table_id: 'C2',
        position_table_id: 'C4', 
        base_params_table_id: 'C18'
      }
    });

  } catch (error) {
    console.error('更新表ID格式失败:', error);
    return NextResponse.json({
      success: false,
      error: `更新失败: ${error instanceof Error ? error.message : '未知错误'}`
    }, { status: 500 });
  }
}

export async function DELETE() {
  try {
    console.log('开始彻底清理并重建SQLite数据库...');
    
    // 关闭现有数据库连接
    sqliteDb.close();
    
    // 删除数据库文件
    const dbPath = path.join(process.cwd(), 'data', 'delivery-management.db');
    if (fs.existsSync(dbPath)) {
      fs.unlinkSync(dbPath);
      console.log('已删除旧的数据库文件');
    }
    
    // 删除可能的WAL和SHM文件
    const walPath = dbPath + '-wal';
    const shmPath = dbPath + '-shm';
    if (fs.existsSync(walPath)) {
      fs.unlinkSync(walPath);
      console.log('已删除WAL文件');
    }
    if (fs.existsSync(shmPath)) {
      fs.unlinkSync(shmPath);
      console.log('已删除SHM文件');
    }
    
    console.log('数据库文件清理完成，将在下次访问时重新创建');
    
    return NextResponse.json({
      success: true,
      message: '数据库已彻底清理，请重新执行数据迁移'
    });
    
  } catch (error) {
    console.error('清理数据库失败:', error);
    return NextResponse.json({
      success: false,
      message: `清理失败: ${error instanceof Error ? error.message : '未知错误'}`
    }, { status: 500 });
  }
} 